package es.gesfutbol.domini.implementacio;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import es.gesfutbol.domini.ILliga;

@Entity
@Table(name="lliga")
public class Lliga implements ILliga {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8687155686430606585L;

	private Long idLliga;
	
	private String temporada;
	
	private String nom;
	
	private String tipus;

	private Set<Equip> equips;
	
	private Set<Jornada> jornades;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idLliga", nullable=false, precision=10, scale=0)
	public Long getIdLliga() {
		return idLliga;
	}

	public void setIdLliga(Long idLliga) {
		this.idLliga = idLliga;
	}

	@Column(name="temporada", nullable=false, length=45)
	public String getTemporada() {
		return temporada;
	}

	public void setTemporada(String temporada) {
		this.temporada = temporada;
	}

	@Column(name="nom", nullable=false, length=45)
	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	@Column(name="tipus", nullable=false, length=45)
	public String getTipus() {
		return tipus;
	}

	public void setTipus(String tipus) {
		this.tipus = tipus;
	}

	@ManyToMany
	@JoinTable(name="equip_en_lliga",
			joinColumns=@JoinColumn(name="idLliga", referencedColumnName="idLliga"),
			inverseJoinColumns=@JoinColumn(name="idEquip", referencedColumnName="idEquip")
		)
	public Set<Equip> getEquips() {
		return equips;
	}

	public void setEquips(Set<Equip> equips) {
		this.equips = equips;
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="lliga", cascade=CascadeType.ALL)
	public Set<Jornada> getJornades() {
		return jornades;
	}

	public void setJornades(Set<Jornada> jornades) {
		this.jornades = jornades;
	}
}
